Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add example graph folding prototype. #1477

Open
wants to merge 8 commits into
base: master
Choose a base branch
from

Conversation

litghost
Copy link
Contributor

@litghost litghost commented Oct 29, 2020

This creates an example efficient folded routing graph for use in place and route tools. Table of results:

A50T A100T A200T
Wire to node map ~23M ~32M ~56M
Node to wire map
Node to downstream pips map

I'm working on creating the binary node to wire map and node to downstream pip maps based on the same basic premise. I'll update this table as I get results.

Signed-off-by: Keith Rothman <[email protected]>
@litghost
Copy link
Contributor Author

FYI: @nelsobe / @mithro

@litghost
Copy link
Contributor Author

litghost commented Nov 5, 2020

I've updated this with a new schema that finds "Maximum Edge Cardinality Bicliques" and then does a greedy set cover to select the bicliques. Given that both maximum edge biclique and set cover are NP complete, this is almost certainly not optimal. There is also a linear scan in both the wire to node and node to wire lookups, but the N is not large (~27 max).

Results:

A50T A100T A200T
Wire to node map ~3.4M ~3.75M ~4.7M
Node to wire map ~6.0M ~6.55M ~7.75M
Node to downstream pips map ~1.1M ~1.1M ~1.4M

@litghost litghost force-pushed the add_example_graph_folding branch from 212a147 to 5188491 Compare November 5, 2020 01:04
@litghost litghost force-pushed the add_example_graph_folding branch from 94e2eef to 5caec63 Compare November 5, 2020 19:15
@litghost litghost requested a review from mithro November 17, 2020 18:50
@mithro
Copy link
Contributor

mithro commented Nov 19, 2020

@litghost I'm probably not going to have time to really review this. Could you get someone else to look at it (maybe someone from BYU)?

@litghost
Copy link
Contributor Author

@nelsobe Can you find someone to review this?

tile_type_to_count, key=
lambda tile_type: tile_type_to_count[tile_type] * tile_type_to_wires[tile_type]
):
print(

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps you could print something at the top of the output of this for loop that describes what is being printed.
ie TILE_TYPE - NUM_TILES - NUM_WIRES, or something more descriptive.

sizeof_wire_in_tile_idx = struct.calcsize('i')
cost_per_wire = 2 * sizeof_delta + sizeof_wire_in_tile_idx
max_wires_per_tile = 0
_ = cost_per_wire

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this cost_per_wire used anywhere else?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants